package study.web.service.cxf.service.impl;

import java.util.ArrayList;
import java.util.List;

import study.web.service.cxf.pojo.SupportCity;
import study.web.service.cxf.pojo.SupportProvince;
import study.web.service.cxf.pojo.Weather;
import study.web.service.cxf.service.IWeatherService;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebServiceSoap;

/**  
* @Name: WeatherService
* @Description: 公网天气信息查询服务接口实现类
* @Author: 李超
* @Create Date: 2017-01-08
*/
public class WeatherServiceImpl implements IWeatherService {
	
	//注入便民网站天气信息查询portType接口
	private WeatherWebServiceSoap weatherWebServiceSoap ;

	public void setWeatherWebServiceSoap(WeatherWebServiceSoap weatherWebServiceSoap) {
		this.weatherWebServiceSoap = weatherWebServiceSoap;
	}

	/**  
	* @Name: querySupportCity（方法的名称）
	* @Description: 查询本天气预报WebServices支持的国内外城市或地区信息（方法的描述）
	* @Author: 李超（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2017-01-07 （创建日期）
	* @Parameters: 无（方法的入参，如果没有，填写为“无”）
	* @Return: List<SupportProvince> 返回省份信息对象集合（返回值，如果没有，填写为“无”）
	*/
	public List<SupportProvince> querySupportProvince() {
		List<SupportProvince> provinceList = null ;
		//调用服务，获取数据
		ArrayOfString supportProvince = weatherWebServiceSoap.getSupportProvince() ;
		List<String> list = supportProvince.getString() ;
		//打印获取到的数据
		for (String result : list) {
			System.out.println(result);
		}
		//解析获取到的信息
		if(list != null && list.size() > 0) {
			provinceList = new ArrayList<SupportProvince>() ;
			for (String result : list) {
				SupportProvince province = new SupportProvince() ;
				province.setProvinceName(result) ;
				provinceList.add(province) ;
			}
		}
		return provinceList;
	}

	/**  
	* @Name: querySupportCity（方法的名称）
	* @Description: 查询本天气预报WebServices支持的国内外城市或地区信息（方法的描述）
	* @Author: 李超（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2017-01-07 （创建日期）
	* @Parameters: String provinceName 指定的洲或国内的省份，若为ALL或空则表示返回全部城市（方法的入参，如果没有，填写为“无”）
	* @Return: List<SupportCity> 返回城市或地区信息对象集合（返回值，如果没有，填写为“无”）
	*/
	public List<SupportCity> querySupportCity(String provinceName) {
		List<SupportCity> cityList = null ;
		//调用服务，获取数据
		ArrayOfString supportCity = weatherWebServiceSoap.getSupportCity(provinceName) ;
		List<String> list = supportCity.getString() ;
		//打印获取到的数据
		for (String result : list) {
			System.out.println(result);
		}
		//解析获取到数据
		if(list != null && list.size() > 0) {
			cityList = new ArrayList<SupportCity>() ;
			for (String result : list) {
				SupportCity city = new SupportCity() ;
				city.setCityName(result) ;
				cityList.add(city) ;
			}
		}
		return cityList;
	}

	/**  
	* @Name: queryWeatherByCityName（方法的名称）
	* @Description: 根据城市名称，查询未来三天的天气信息（方法的描述）
	* @Author: 李超（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2017-01-07 （创建日期）
	* @Parameters: String cityName 城市名称（方法的入参，如果没有，填写为“无”）
	* @Return: List<Weather> 返回城市对象集合（返回值，如果没有，填写为“无”）
	*/
	public List<Weather> queryWeatherByCityName(String cityName)
			throws Exception {
		List<Weather> weatherList = null ;
		//调用公网的天气查询服务，获取天气信息
		ArrayOfString weatherbyCityName = weatherWebServiceSoap.getWeatherbyCityName(cityName) ;
		List<String> resultList = weatherbyCityName.getString() ;
		//打印获取到的天气信息
		System.out.println(resultList);
		//解析从公网查询的信息
		if(resultList != null && resultList.size() > 0) {
			weatherList = new ArrayList<Weather>() ;
			Weather weather01 = new Weather() ;
			weather01.setDetail(resultList.get(6)) ;
			weather01.setImg(resultList.get(8)) ;
			Weather weather02 = new Weather() ;
			weather02.setDetail(resultList.get(13)) ;
			weather02.setImg(resultList.get(15)) ;
			Weather weather03 = new Weather() ;
			weather03.setDetail(resultList.get(18)) ;
			weather03.setImg(resultList.get(20)) ;
			weatherList.add(weather01) ;
			weatherList.add(weather02) ;
			weatherList.add(weather03) ;
		}
		//将解析后的数据返回给客户端
		return weatherList ;
	}

}
